// pages/main/profile/profile.js
const { authManager } = require('../../../utils/auth');

Page({ 
  data: {
    avatarUrl: 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0', 
    userInfo: {},
    departmentName: '',
    isAdmin: false
  },

  onLoad() {
    // 检查登录状态
    if (!authManager.pageLoginCheck()) {
      return;
    }
    this.loadUserInfo();
  },

  onShow() {
    // 检查登录状态
    if (!authManager.pageLoginCheck()) {
      return;
    }
    this.loadUserInfo();
  },

  navigateToPersonalCenter(){
    wx.navigateTo({
      url:'/pages/main/personal-center/personal-center'
    })
  },

  // 加载用户信息
  loadUserInfo() {
    try {
      const userInfo = wx.getStorageSync('user_info');
      console.log(userInfo)
      if (userInfo) {
        const departmentName = this.getDepartmentName(userInfo.part_id_id);
        
        this.setData({
          userInfo: {
            ...userInfo,
            displayName: userInfo.zh_name || '未知用户',
            displayAvatarUrl: userInfo.wx_avatar_url || '/images/default-avatar.png'
          },
          avatarUrl:userInfo.wx_avatar_url,
          departmentName: departmentName,
          displayDepartmentName: departmentName || '未知部门',
          isAdmin: userInfo.Per_group_id === 1
        });
      }
    } catch (e) {
      console.error('获取用户信息失败:', e);
    }
  },
  onChooseAvatar(e) {
    const avatarUrl = e.detail.avatarUrl;
    const userInfo = this.data.userInfo;
    console.log( avatarUrl)
    this.setData({
    avatarUrl: avatarUrl
    });
    wx.uploadFile({
      formData:{
        user_id: userInfo.id,
        user_name: userInfo.zh_name,
        user_openid: userInfo.open_id,
      },
      filePath: avatarUrl,  // 要上传的头像文件路径
      name: 'avatarImg',    // 必须与 Django 视图函数中 request.FILES['avatarImg'] 的 key 一致！
      url: `${getApp().globalData.serverUrl}/wx_UpdateUseravatar/`,
      header: {
        'content-type': 'multipart/form-data'  // 上传文件必须的请求头（wx.uploadFile 会自动添加，可省略）
      },
      success: function(res) {
        // 解析 Django 返回的 JSON 数据（res.data 是字符串，需转成对象）
        const result = JSON.parse(res.data);
        if (result.success) {
          wx.showToast({ title: '上传成功！' });
          // 打印图片在本机的保存路径（方便验证）
          console.log('图片本机保存路径：', result.data.local_path);
        } else {
          // 上传失败（如未接收到文件、保存错误）
          wx.showToast({ title: result.message, icon: 'none' });
        }
      },
      fail: function(err) {
        // 请求失败（如网络不通、接口地址错误）
        wx.showToast({ title: '上传失败，请检查网络', icon: 'none' });
        console.error('请求失败原因：', err);
      }
    });
    },
  // 获取部门名称
  getDepartmentName(partId) {
    const departments = {
      1: '总裁办', 2: '信息技术部', 3: '商务服务部',
      4: '计划财务部', 5: '行政人事部', 6: '分公司管理部',
      7: '规划设计中心', 8: '数据勘测中心', 9: '资源评价中心',
      10: '评估咨询一中心', 11: '评估咨询二中心', 12: '经纪代理中心',
      13: '江阴事业中心', 14: '南京事业中心', 15: '其它'
    };
    return departments[partId] || '未知部门';
  },

  // 菜单点击事件
  onMenuTap(e) {
    const type = e.currentTarget.dataset.type;
    
    switch (type) {
      case 'system-management':
        this.handleSystemManagement();
        break;
      case 'settings':
        this.handleSettings();
        break;
      default:
        wx.showToast({
          title: '功能开发中',
          icon: 'none'
        });
    }
  },

  // 应用与权限管理
  handleSystemManagement() {
    if (!this.data.isAdmin) {
      wx.showToast({
        title: '无权限访问',
        icon: 'none'
      });
      return;
    }
    
    wx.showActionSheet({
      itemList: ['应用管理', '用户权限', '角色权限'],
      success: (res) => {
        if (res.tapIndex === 0) {
          this.navigateToAppManagement();
        } else if (res.tapIndex === 1) {
          this.navigateToPermissionManagement();
        } else if (res.tapIndex === 2) {
          this.navigateToRolePermissions();
        }
      }
    });
  },
  
  // 导航到应用管理
  navigateToAppManagement() {
    wx.navigateTo({
      url: '/pages/admin/app-management/app-management'
    });
  },

  // 导航到用户权限管理
  navigateToPermissionManagement() {
    wx.navigateTo({
      url: '/pages/admin/permission-management/permission-management'
    });
  },

  // 导航到角色权限管理
  navigateToRolePermissions() {
    wx.navigateTo({
      url: '/pages/admin/role-permissions/role-permissions'
    });
  },

  // 设置
  handleSettings() {
    wx.showActionSheet({
      itemList: ['清除缓存','退出登录','绑定微信','修改密码'],
      success: (res) => {
        if (res.tapIndex === 0) {
          this.handleClearCache();
        } else if (res.tapIndex === 1) {
          this.handleLogout();
        } else if (res.tapIndex === 2) {
          this.bandwx();
        } else if (res.tapIndex === 3) {
          this.handleChangePassword();
        }
      }
    });
  },
  
  // 修改密码
  handleChangePassword() {
    // 创建修改密码的弹窗
    let oldPassword = '';
    let newPassword = '';
    let confirmPassword = '';
    
    wx.showModal({
      title: '修改密码',
      editable: true,
      placeholderText: '请输入旧密码',
      success: (res1) => {
        if (res1.confirm) {
          oldPassword = res1.content;
          if (!oldPassword) {
            wx.showToast({
              title: '旧密码不能为空',
              icon: 'none'
            });
            return;
          }
          
          // 输入新密码
          wx.showModal({
            title: '修改密码',
            editable: true,
            placeholderText: '请输入新密码（不少于6位）',
            success: (res2) => {
              if (res2.confirm) {
                newPassword = res2.content;
                if (!newPassword) {
                  wx.showToast({
                    title: '新密码不能为空',
                    icon: 'none'
                  });
                  return;
                }
                
                if (newPassword.length < 6) {
                  wx.showToast({
                    title: '新密码不能少于6位',
                    icon: 'none'
                  });
                  return;
                }
                
                // 确认新密码
                wx.showModal({
                  title: '修改密码',
                  editable: true,
                  placeholderText: '请再次输入新密码',
                  success: (res3) => {
                    if (res3.confirm) {
                      confirmPassword = res3.content;
                      if (newPassword !== confirmPassword) {
                        wx.showToast({
                          title: '两次密码输入不一致',
                          icon: 'none'
                        });
                        return;
                      }
                      
                      // 提交修改密码请求
                      this.submitChangePassword(oldPassword, newPassword, confirmPassword);
                    }
                  }
                });
              }
            }
          });
        }
      }
    });
  },
  
  // 提交修改密码请求
  submitChangePassword(oldPassword, newPassword, confirmPassword) {
    const userId = this.data.userInfo.id;
    
    wx.showLoading({ title: '修改中...' });
    
    wx.request({
      url: `${getApp().globalData.serverUrl}/wx_ChangePasswordById/`,
      method: 'POST',
      data: {
        user_id: userId,
        old_password: oldPassword,
        new_password: newPassword,
        confirm_password: confirmPassword
      },
      success: (res) => {
        wx.hideLoading();
        if (res.data.status) {
          wx.showToast({
            title: '密码修改成功',
            icon: 'success'
          });
          // 更新本地存储的用户信息
          const userInfo = wx.getStorageSync('user_info');
          if (userInfo) {
            userInfo.zh_pwd = newPassword;
            wx.setStorageSync('user_info', userInfo);
          }
        } else {
          wx.showToast({
            title: res.data.message || '密码修改失败',
            icon: 'none'
          });
        }
      },
      fail: () => {
        wx.hideLoading();
        wx.showToast({
          title: '网络错误，请重试',
          icon: 'none'
        });
      }
    });
  },
  onShareAppMessage() {
  },
  // 清除缓存
  handleClearCache() {
    wx.showModal({
      title: '清除缓存',
      content: '清除缓存将删除所有本地数据（登录信息除外），并重启小程序以加载最新版本。确定要继续吗？',
      confirmText: '清除并重启',
      confirmColor: '#ff4d4f',
      success: (res) => {
        if (res.confirm) {
          this.performClearCache();
        }
      }
    });
  },

  // 执行清除缓存操作
  performClearCache() {
    wx.showLoading({
      title: '清除中...',
      mask: true
    });

    try {
      // 保存登录信息（保留登录状态）
      const userInfo = wx.getStorageSync('user_info');
      const token = wx.getStorageSync('token');
      
      // 清除所有本地存储
      wx.clearStorageSync();
      
      // 恢复登录信息（保持用户登录状态）
      if (userInfo) {
        wx.setStorageSync('user_info', userInfo);
      }
      if (token) {
        wx.setStorageSync('token', token);
      }
      
      // 延迟后重启小程序（给清除操作一点时间）
      setTimeout(() => {
        this.restartMiniProgram();
      }, 500);
      
    } catch (error) {
      wx.hideLoading();
      console.error('清除缓存失败:', error);
      wx.showToast({
        title: '清除缓存失败',
        icon: 'none',
        duration: 2000
      });
    }
  },

  // 重启小程序
  restartMiniProgram() {
    wx.hideLoading();
    
    wx.showToast({
      title: '缓存已清除',
      icon: 'success',
      duration: 1000
    });
    
    setTimeout(() => {
      // 重启小程序并跳转到首页
      wx.reLaunch({
        url: '/pages/main/home/home',
        success: () => {
          console.log('小程序已重启');
        },
        fail: (err) => {
          console.error('重启失败:', err);
          // 如果 reLaunch 失败，尝试使用 navigateTo
          wx.redirectTo({
            url: '/pages/main/home/home',
            fail: () => {
              wx.showToast({
                title: '重启失败，请手动重启小程序',
                icon: 'none',
                duration: 3000
              });
            }
          });
        }
      });
    }, 1000);
  },

  // 退出登录
  handleLogout() {
    wx.showModal({
      title: '确认退出',
      content: '确定要退出登录吗？',
      success: (res) => {
        if (res.confirm) {
          authManager.logout();
        }
      }
    });
  },

  // 绑定微信账号
  bandwx() {
    const username = this.data.userInfo.zh_name;
    wx.showLoading({ title: '绑定中...' });

    wx.getUserInfo({
      success: (res) => {
        const userInfo = res.userInfo;
        this.getOpenId(userInfo).then((userInfoWithOpenId) => {
          this.performWechatBinding(username, userInfoWithOpenId);
        }).catch((err) => {
          wx.hideLoading();
          console.error('获取OpenID失败:', err);
          wx.showToast({
            title: '绑定失败',
            icon: 'error'
          });
        });
      },
      fail: () => {
        wx.hideLoading();
        wx.showToast({
          title: '获取微信授权失败',
          icon: 'error'
        });
      }
    });
  },

  // 执行微信绑定
  performWechatBinding(username, userInfo) {
    // 先检查OpenID是否已被绑定
    wx.request({
      url: `${getApp().globalData.serverUrl}/wx_CheckOpenIdExists/`,
      method: 'GET',
      data: { openid: userInfo.openid },
      success: (res) => {
        if (res.data.exists) {
          wx.hideLoading();
          wx.showToast({
            title: '该微信已绑定其他账号',
            icon: 'none'
          });
          return;
        }

        // 执行绑定
        wx.request({
          url: `${getApp().globalData.serverUrl}/wx_UpdateUserOpenId/`,
          method: 'POST',
          data: {
            zh_name: username,
            openid: userInfo.openid,
          },
          success: (res) => {
            wx.hideLoading();
            if (res.data.status) {
              wx.showToast({
                title: '绑定成功',
                icon: 'success'
              });
              // 更新本地存储的用户信息
              const userInfo = wx.getStorageSync('user_info');
              if (userInfo) {
                userInfo.open_id = userInfo.openid;
                wx.setStorageSync('user_info', userInfo);
              }
            } else {
              wx.showToast({
                title: '绑定失败',
                icon: 'error'
              });
            }
          },
          fail: () => {
            wx.hideLoading();
            wx.showToast({
              title: '绑定失败',
              icon: 'error'
            });
          }
        });
      },
      fail: () => {
        wx.hideLoading();
        wx.showToast({
          title: '检查绑定状态失败',
          icon: 'error'
        });
      }
    });
  },

  // 获取OpenID
  getOpenId(userInfo) {
    return new Promise((resolve, reject) => {
      wx.request({
        url: `${getApp().globalData.serverUrl}/wx_GetOpenId/`,
        method: 'POST',
        success: (res) => {
          if (res.data.status && res.data.appid && res.data.secret) {
            const { appid, secret, APP_URL } = res.data;
            
            wx.login({
              success: (loginRes) => {
                const code = loginRes.code;
                wx.request({
                  url: `${APP_URL}appid=${appid}&secret=${secret}&js_code=${code}&grant_type=authorization_code`,
                  success: (apiRes) => {
                    if (apiRes.data.openid) {
                      userInfo.openid = apiRes.data.openid;
                      resolve(userInfo);
                    } else {
                      reject(apiRes.data.errmsg || '获取OpenID失败');
                    }
                  },
                  fail: reject
                });
              },
              fail: reject
            });
          } else {
            reject(res.data.message || '获取凭证失败');
          }
        },
        fail: reject
      });
    });
  }
});
